/*
给你一个字符串 text，你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"（气球）。

字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。

 

示例 1：



输入：text = "nlaebolko"
输出：1
示例 2：



输入：text = "loonbalxballpoon"
输出：2
示例 3：

输入：text = "leetcode"
输出：0
 

提示：

1 <= text.length <= 10^4
text 全部由小写英文字母组成

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/maximum-number-of-balloons
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/

#include "../stdc++.h"

class Solution {
public:
    int maxNumberOfBalloons(string text) {
        unordered_map<char, int> hashMap{
            {'a', 0},
            {'b', 0},
            {'l', 0},
            {'o', 0},
            {'n', 0},
        };
        for (char& c : text) {
            if (c == 'a' || c == 'b' || c == 'l' || c == 'o' || c == 'n') {
                ++hashMap[c];
            }
        }
        hashMap['l'] /= 2;
        hashMap['o'] /= 2;
        int res{INT_MAX};
        for (auto ite = hashMap.begin(); ite != hashMap.end(); ++ite) {
            res = min(res, (*ite).second);
        }
        return res;
    }
};

class Solution {
public:
    int maxNumberOfBalloons(string text) {
        unordered_map<char, int> m;
        for (char& c : text) {
            m[c]++;
        }
        int res = min({m['a'], m['b'], m['l'] / 2, m['o'] / 2, m['n']});
        return res;
    }
};
